5.3 Unterabfragen – mit Ergebnistabellen
Abfragen, die eine Tabelle als Ergebnis liefern können mit ANY
oder ALL
als Unterabfrage eingesetzt werden.
Das ANY
Schlüsselwort, welches mit einem Vergleichsoperator verbunden sein muss, liefert
ein TRUE (richtig), wenn für mindestens einen Datensatz der Unterabfrage der Vergleich zutrifft.
Wir suchen alle Mitarbeiter die schon länger in der Firma arbeiten, als irgendein Mitarbeiter der aus Radeberg (PLZ = 01796) kommt.
[9]SELECT name AS Nachname, einstelldatum
FROM tbl_mitarbeiter
WHERE einstelldatum < ANY
(SELECT einstelldatum
FROM tbl_mitarbeiter
WHERE plz = "01796")
Das Ergebnis der Unterabfrage liefert uns die beiden Daten: 1986-08-05
und 1990-01-28
.
Diese beiden Informationen werden nun benutzt um zu überprüfen, ob die Vergleichsbedingung erfüllt ist
oder nicht. Wir haben hier ANY
in der Abfrage eingesetzt, also muss der Vergleich nur für eines
der Ergebnisse der Unterabfrage übereinstimmen.
Bei der Verwendung von ALL
muss der gemachte Vergleich für alle
Datensätze der Unterabfrage zutreffen. Hier geben wir alle Namen der Mitarbeiter aus,
die schon länger in der Firma sind, als alle Mitarbeiter aus Radeberg (PLZ = 01796).
[7]SELECT name AS Nachname, einstelldatum
FROM tbl_mitarbeiter
WHERE einstelldatum < ALL
(SELECT einstelldatum
FROM tbl_mitarbeiter
WHERE plz = "01796")
(Zum Herausfiltern der 0000-00-00 Daten, könnte man in der WHERE
Zeile noch eine
weitere Bedingung einfügen.)